#pragma once

#include "nlohmann/json.hpp"
#include "web_server.h"
#include <string>
#include <functional>

namespace El {
namespace Restful {

/**
 * @brief 注册网络管理相关API处理程序
 */
void RegisterNetworkApiHandlers();

/**
 * @brief 获取网络配置处理程序
 * @param request 请求体
 * @param response 响应体
 * @return 处理是否成功
 */
bool GetNetworkConfigHandler(const nlohmann::json &request, nlohmann::json &response);

/**
 * @brief 更新网络接口配置处理程序
 * @param request 请求体
 * @param response 响应体
 * @param interface_name 接口名称
 * @return 处理是否成功
 */
bool UpdateInterfaceConfigHandler(const nlohmann::json &request,
                                  nlohmann::json &response,
                                  const std::string &interface_name);

/**
 * @brief 获取网络配置的HTTP处理函数
 * @param req HTTP请求
 * @return HTTP响应
 */
WebServer::HttpResponse HandleGetNetworkConfig(const WebServer::HttpRequest &req);

/**
 * @brief 更新网络接口配置的HTTP处理函数
 * @param req HTTP请求
 * @return HTTP响应
 */
WebServer::HttpResponse HandleUpdateInterfaceConfig(const WebServer::HttpRequest &req);

} // namespace Restful
} // namespace El